#ifndef __RINGBUFFER_H__
#define __RINGBUFFER_H__

#include "apt32f102b.h"

#define RingBuffSize    (64)

typedef struct
{
    uint8_t  Buff_Ptr[RingBuffSize];
    volatile uint8_t Write_Index;
    volatile uint8_t Read_Index;
    volatile uint8_t  Buff_Length;
    uint8_t Buff_Size;
} RingBuff_type_t;

/**
 * @brief 缓冲区初始化
 * @param 无
 * @return 无
 */
void RingBuffer_Init(void);

/**
 * @brief 写一个字节到缓冲区
 * @param Byte 待写入的数据
 * @return 1：写入成功， 0：写入失败
 */
uint8_t RingBuffer_Write_Byte(const uint8_t Byte);

/**
 * @brief 从缓冲区读一个字节
 * @param Byte 读出的数据
 * @return uint8_t 
 */
uint8_t RingBuffer_Read_Byte(uint8_t* Byte);

/**
 * @brief 清空缓冲区
 * @return uint8_t 
 */
uint8_t RingBuffer_Clear_Buffer(void);

#endif
